/*
51nod1632 B君的连通
B国拥有n个城市，其交通系统呈树状结构，即任意两个城市存在且仅存在一条交通线将其连接。A国是B国的敌国企图秘密发射导弹打击B国的交通线，现假设每条交通线都有50%的概率被炸毁，B国希望知道在被炸毁之后，剩下联通块的个数的期望是多少？
Input
一个数n（2<=n<=100000）
接下来n-1行，每行两个数x,y表示一条交通线。(1<=x,y<=n)
数据保证其交通系统构成一棵树。
Output
一行一个数，表示答案乘2^(n-1)后对1,000,000,007取模后的值。
Input示例
3
1 2
1 3
Output示例
8
题意：有效的数据只有n，其他的连通都是烟雾弹，毕竟保证是一颗树。
因为每炸毁一条边就多出一个连通图，所以最优是一个连通，最差是n个连通。选择一条边的概率是1/2，选择n条边就是1/2^(n-1)，那么最后题目要求乘以2^(n-1)，所以抵消了。
那么公式原型就是：
1+2*C(n−1,1)+3*C(n−1,2)+...+n*C(n−1,n−1)
然后经过打表发现该序列的通式为：
ans[i]=2*ans[i-1]+2^(i-2),ans[1]=1
*/
#include <bits/stdc++.h>
#define ll long long
#define PI acos(-1)
#define M(n, m) memset(n, m, sizeof(n));
const int mod = 1e9 + 7;
const int maxn = 1e5 + 100;
using namespace std;

ll ans[maxn];

ll quick_mod(ll n, ll m)
{
    ll a = 1;
    while (m)
    {
        if (m & 1)
            a = a * n % mod;
        m >>= 1;
        n = n * n % mod;
    }
    return a;
}

void Init()
{
    ans[0] = ans[1] = 1;
    for (ll i = 2;i < maxn;i ++)
        ans[i] = (2 * ans[i - 1] + quick_mod(2, i - 2)) % mod;
}

int main()
{
    ll n, x, y;
    Init();
    while (~scanf("%lld", &n))
    {
        for (ll i = 1;i < n;i ++)
            scanf("%lld%lld", &x, &y);
        cout << ans[n] << endl;
    }
    return 0;
}
